<?php

include_once('Client_NO2_SupplierChange.php');
include_once('Client_NO2_Client.php');
include_once('Client_NO2_ES.php');
include_once('Client_NO2_QualitySeries.php');
include_once('Client_NO2_LoadProfile.php');
include_once('Client_NO2_TimePeriod.php');
include_once('Client_NO2_SupplierChangeResponse.php');
include_once('Client_NO2_QualitySeriesResponse.php');
include_once('Client_NO2_LoadProfileResponse.php');


/**
 *
 */
class Client_NO2_T2NO2ApiService extends SoapClient
{

  /**
   *
   * @var array $classmap The defined classes
   * @access private
   */
  private static $classmap = array(
    'SupplierChange' => 'Client_NO2_SupplierChange',
    'Client' => 'Client_NO2_Client',
    'ES' => 'Client_NO2_ES',
    'QualitySeries' => 'Client_NO2_QualitySeries',
    'LoadProfile' => 'Client_NO2_LoadProfile',
    'TimePeriod' => 'Client_NO2_TimePeriod',
    'SupplierChangeResponse' => 'Client_NO2_SupplierChangeResponse',
    'QualitySeriesResponse' => 'Client_NO2_QualitySeriesResponse',
    'LoadProfileResponse' => 'Client_NO2_LoadProfileResponse');

  /**
   *
   * @param array $config A array of config values
   * @param string $wsdl The wsdl file to use
   * @access public
   */
  public function __construct(array $options = array(), $wsdl = 'http://esi.vels.dev.modera.net/project/service/noapi.wsdl')
  {
    foreach(self::$classmap as $key => $value)
    {
      if(!isset($options['classmap'][$key]))
      {
        $options['classmap'][$key] = $value;
      }
    }

    parent::__construct($wsdl, $options);
  }

  /**
   * Message for client electricity supplier change
   *
   * @param Client_NO2_SupplierChange $notifyOfClientESChangeRequest
   * @access public
   */
  public function notifyOfClientESChange($notifyOfClientESChangeRequest)
  {
    return $this->__soapCall('notifyOfClientESChange', array($notifyOfClientESChangeRequest));
  }

  /**
   * Message for quality series
   *
   * @param Client_NO2_QualitySeries $qualitySeriesRequest
   * @access public
   */
  public function qualitySeries($qualitySeriesRequest)
  {
    return $this->__soapCall('qualitySeries', array($qualitySeriesRequest));
  }

  /**
   * Message for Load Profile
   *
   * @param Client_NO2_LoadProfile $loadProfileRequest
   * @access public
   */
  public function loadProfile($loadProfileRequest)
  {
    return $this->__soapCall('loadProfile', array($loadProfileRequest));
  }

}
